/*
    This file is part of Lua Invoke.
    Copyright 2005-2007 Rafael de Oliveira Jannone <rafael@jannone.org>

    Lua Invoke is free software; you can redistribute it and/or modify
    it under the terms of the GNU Lesser General Public License as published by
    the Free Software Foundation; either version 3 of the License, or
    (at your option) any later version.

    Foobar is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    GNU Lesser General Public License for more details.

    You should have received a copy of the GNU Lesser General Public License
    along with this program.  If not, see <http://www.gnu.org/licenses/>.
*/

/* callbacks implementation for invoke */

#ifndef CALLBACK_H
#define CALLBACK_H

#include <lua.h>
#include "invoke.h"

/* callback */

typedef struct _callback_t
{
	lua_State*	L;
	int		slot;
	const char*	sign;
	void*		callback;
} 
callback_t;

/* init_slots could be better suited to cbslots.c, however
	cbslots.c is autogenerated */
void
callback_init_slots();

callback_t*
callback_nextfree();

void
callback_unregister(callback_t* cb);

LL 
callback_run(callback_t* cb, long x, va_list ap);

#endif
